package com.example.algorithm.no0014.solution;

import com.example.algorithm.no0014.Solution;

/**
 * @Description 解答实现-最长公共前缀
 *
 * 从后往前水平扫描
 * (1) 取数组中一个字符串作为匹配串去循环匹配数组中其它字符串。
 * (2) 发生不匹配就截去匹配串最后一个字符继续循环，匹配完成就匹配下一个字符串，直到最后。
 * (3) 如果匹配串在匹配过程中长度被截为 0 ，则直接返回不匹配。
 *
 * @ClassName SumTwoNum
 * @Author Administrator
 * @Date 2020/5/16 12:48
 * @Version 1.0.0
 */
public class SolutionImpl1 implements Solution {
    @Override
    public String longestCommonPrefix(String[] strs) {
        if (strs.length == 0) {
            return "";
        }
        String prefix = strs[0];
        // 字符串可以被自身匹配，所以从第二个开始匹配。
        for (int i = 1; i < strs.length; i++) {
            // 如果匹配串不在要匹配字符串的开头，则表示不是要匹配字符串的前缀。
            while (strs[i].indexOf(prefix) != 0) {
                prefix = prefix.substring(0, prefix.length() - 1);
                if (prefix.isEmpty()) {
                    return "";
                }
            }
        }
        return prefix;
    }
}
